import Request from '@/uni_modules/luch-request/index.js'


// 创建一个请求实例
const http = new Request({
	baseURL: "https://housedada.cn",
	timeout: 10000,
	header: {
		'Content-Type': 'application/json;charset=UTF-8',
	},
});

// Loading全局实例
let loadingInstance = null;

// 显示loading
function showLoading(message = '加载中') {
	if (!loadingInstance) {
		loadingInstance = uni.showLoading({
			title: message,
			mask: true,
		});
	}
}

// 请求拦截器
http.interceptors.request.use(
	(config) => {
		const miuUserInfo = uni.getStorageSync('miuUserInfo');
		if (miuUserInfo) {
			config.header['openid'] = miuUserInfo.openid;
		}
		// 显示loading（可根据需要添加条件）
		showLoading();
		return config;
	},
	(error) => {
		return Promise.reject(error);
	}
);

// 响应拦截器
http.interceptors.response.use(
	(response) => {
		// 隐藏loading
		uni.hideLoading()
		if (response.data.code == 401) {
			// 清空登陆信息
			uni.removeStorageSync('miuUserInfo');
			uni.showToast({
				title: response.data.msg,
				icon: 'none',
			});
			return Promise.reject(response.data);
		} else if (response.data.code !== 200) {
			// 显示错误信息（可根据需要自定义）
			uni.showToast({
				title: response.data.msg || '请求失败，请稍后再试',
				icon: 'none',
			});
			return Promise.reject(response.data);
		}
		return Promise.resolve(response.data);
	},
	(error) => {
		// 隐藏loading（确保无论成功还是失败都隐藏loading）
		uni.hideLoading()
		// 显示通用错误信息（可根据需要自定义）
		uni.showToast({
			title: '网络请求出错',
			icon: 'none',
		});
		return Promise.reject(error);
	}
);

// 封装请求函数
const request = (config) => {
	if (config.url && config.url[0] !== '/') {
		config.url = "/" + config.url;
	}
	return http.middleware(config);
};

export default request;
